﻿IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'ReporteFactura')
	BEGIN
		DROP  Procedure  ReporteFactura
	END

GO

CREATE Procedure ReporteFactura

	(
		@fechainicio datetime,
		@fechafin datetime,
		@idProveedor int
		
	)


AS
begin
 if @idProveedor!=0
	SELECT     dbo.Factura.Fecha,
				dbo.Factura.Descripcion,
				dbo.Factura.Serie,
				dbo.Factura.Numero,
				dbo.DetalleFactura.Cantidad,
				dbo.DetalleFactura.Precio,
				dbo.Bien.Nombre, 
				dbo.UnidadMedidia.Abreviatura,
				dbo.Proveedor.IDproveedor,
				dbo.Proveedor.RazonSocial,
				dbo.Proveedor.Ruc
	FROM        dbo.Factura INNER JOIN
				dbo.DetalleFactura ON dbo.Factura.IdFactura = dbo.DetalleFactura.IdFactura INNER JOIN
				dbo.Bien ON dbo.DetalleFactura.IdBien = dbo.Bien.IdBien INNER JOIN
				dbo.UnidadMedidia ON dbo.Bien.IdUnidadMedida = dbo.UnidadMedidia.IdUnidadMedida INNER JOIN
				dbo.OrdenCompra ON dbo.Factura.IdOrdenCompra = dbo.OrdenCompra.IdOrdenCompra INNER JOIN
				dbo.Proveedor ON dbo.OrdenCompra.IdProveedor = dbo.Proveedor.IdProveedor 
				where dbo.Proveedor.IDproveedor=@idProveedor and dbo.Factura.Fecha between @fechainicio  and @fechafin
else
SELECT     dbo.Factura.Fecha,
				dbo.Factura.Descripcion,
				dbo.Factura.Serie,
				dbo.Factura.Numero,
				dbo.DetalleFactura.Cantidad,
				dbo.DetalleFactura.Precio,
				dbo.Bien.Nombre, 
				dbo.UnidadMedidia.Abreviatura,
				dbo.Proveedor.IDproveedor,
				dbo.Proveedor.RazonSocial,
				dbo.Proveedor.Ruc
	FROM        dbo.Factura INNER JOIN
				dbo.DetalleFactura ON dbo.Factura.IdFactura = dbo.DetalleFactura.IdFactura INNER JOIN
				dbo.Bien ON dbo.DetalleFactura.IdBien = dbo.Bien.IdBien INNER JOIN
				dbo.UnidadMedidia ON dbo.Bien.IdUnidadMedida = dbo.UnidadMedidia.IdUnidadMedida INNER JOIN
				dbo.OrdenCompra ON dbo.Factura.IdOrdenCompra = dbo.OrdenCompra.IdOrdenCompra INNER JOIN
				dbo.Proveedor ON dbo.OrdenCompra.IdProveedor = dbo.Proveedor.IdProveedor 
				where  dbo.Factura.Fecha between @fechainicio  and @fechafin
end

GO


GRANT EXEC ON ReporteFactura TO PUBLIC

GO


